;问题7.9  将每个单词的前四个字母改 为大写（用栈）
assume cs:codesg,ss:stacksg,ds:datasg

stacksg segment
	dw 0,0,0,0,0,0,0,0
stacksg ends

datasg segment
	db '1.display       '
	db '2.brows         '
	db '3.replace       '
	db '4.modify        '
datasg ends

codesg segment
start:
	mov ax,datasg
	mov ds,ax
	mov bx,0
	
	mov ax,stacksg
	mov ss,ax
	mov sp,16
	mov cx,4
	mov si,0
	
l0:	push cx				;给外层循环暂存，注意，要放在循环中（每次外层循环都要暂存一次次数！！！！！)****************************
	;mov al,0 			;不需要
	mov cx,4			;设置内层循环次数！！重要******************************

l1:	mov al,[si+bx+2]	;内层循环开始，先定位到d，bx保存内层（横向bit，开头要+2，然后每次改为大写后+1（向高位移动1bit）
	and al,11011111b	;变为大写
	mov [si+bx+2],al
	add bx,1 			;定位到next bit
	loop l1

	add si,16
	mov bx,0
	pop cx				;出栈到 cx 
	
	loop l0 
	mov ax,4c00h
	int 21h
	
codesg ends

end start 